#Boa:Frame:HistoricoProducto

import wx
import wx.grid
import consultasBD
import utiles

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)

def create(parent,miptc=""):
    return HistoricoProducto(parent,miptc)

[wxID_HISTORICOPRODUCTO, wxID_HISTORICOPRODUCTOBUTTON1, 
 wxID_HISTORICOPRODUCTOBUTTON2, wxID_HISTORICOPRODUCTOBUTTON3, 
 wxID_HISTORICOPRODUCTOBUTTON4, wxID_HISTORICOPRODUCTOCHECKBOX1, 
 wxID_HISTORICOPRODUCTOCHECKBOX2, wxID_HISTORICOPRODUCTOGRID1, 
 wxID_HISTORICOPRODUCTOPANEL1, wxID_HISTORICOPRODUCTOSTATICTEXT1, 
 wxID_HISTORICOPRODUCTOSTATICTEXT10, wxID_HISTORICOPRODUCTOSTATICTEXT11, 
 wxID_HISTORICOPRODUCTOSTATICTEXT2, wxID_HISTORICOPRODUCTOSTATICTEXT3, 
 wxID_HISTORICOPRODUCTOSTATICTEXT4, wxID_HISTORICOPRODUCTOSTATICTEXT5, 
 wxID_HISTORICOPRODUCTOSTATICTEXT6, wxID_HISTORICOPRODUCTOSTATICTEXT7, 
 wxID_HISTORICOPRODUCTOSTATICTEXT8, wxID_HISTORICOPRODUCTOSTATICTEXT9, 
 wxID_HISTORICOPRODUCTOTEXTCTRL1, wxID_HISTORICOPRODUCTOTEXTCTRL10, 
 wxID_HISTORICOPRODUCTOTEXTCTRL11, wxID_HISTORICOPRODUCTOTEXTCTRL12, 
 wxID_HISTORICOPRODUCTOTEXTCTRL2, wxID_HISTORICOPRODUCTOTEXTCTRL3, 
 wxID_HISTORICOPRODUCTOTEXTCTRL4, wxID_HISTORICOPRODUCTOTEXTCTRL5, 
 wxID_HISTORICOPRODUCTOTEXTCTRL6, wxID_HISTORICOPRODUCTOTEXTCTRL7, 
 wxID_HISTORICOPRODUCTOTEXTCTRL8, wxID_HISTORICOPRODUCTOTEXTCTRL9, 
] = [wx.NewId() for _init_ctrls in range(32)]

class HistoricoProducto(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_HISTORICOPRODUCTO,
              name='HistoricoProducto', parent=prnt, pos=wx.Point(28, 51),
              size=wx.Size(890, 487), style=wx.DEFAULT_FRAME_STYLE,
              title='Historico Producto por PTC')
        self.SetClientSize(wx.Size(882, 460))

        self.panel1 = wx.Panel(id=wxID_HISTORICOPRODUCTOPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(882, 460),
              style=wx.TAB_TRAVERSAL)

        self.staticText1 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT1,
              label='P.T.C.', name='staticText1', parent=self.panel1,
              pos=wx.Point(16, 8), size=wx.Size(31, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT2,
              label='Cod. Sussan', name='staticText2', parent=self.panel1,
              pos=wx.Point(168, 8), size=wx.Size(60, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL1,
              name='textCtrl1', parent=self.panel1, pos=wx.Point(168, 24),
              size=wx.Size(72, 21), style=0, value='')
        self.textCtrl1.SetEditable(False)

        self.textCtrl2 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL2,
              name='textCtrl2', parent=self.panel1, pos=wx.Point(16, 24),
              size=wx.Size(64, 21), style=0, value='')

        self.button1 = wx.Button(id=wxID_HISTORICOPRODUCTOBUTTON1,
              label='Buscar', name='button1', parent=self.panel1,
              pos=wx.Point(88, 24), size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBuscar,
              id=wxID_HISTORICOPRODUCTOBUTTON1)

        self.staticText3 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT3,
              label='Descripcion', name='staticText3', parent=self.panel1,
              pos=wx.Point(240, 8), size=wx.Size(54, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL3,
              name='textCtrl3', parent=self.panel1, pos=wx.Point(240, 24),
              size=wx.Size(200, 21), style=0, value='')
        self.textCtrl3.SetEditable(False)

        self.staticText4 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT4,
              label='Proveedor', name='staticText4', parent=self.panel1,
              pos=wx.Point(440, 8), size=wx.Size(50, 13), style=0)

        self.textCtrl4 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL4,
              name='textCtrl4', parent=self.panel1, pos=wx.Point(440, 24),
              size=wx.Size(64, 21), style=0, value='')
        self.textCtrl4.SetEditable(False)

        self.textCtrl5 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL5,
              name='textCtrl5', parent=self.panel1, pos=wx.Point(504, 24),
              size=wx.Size(168, 21), style=0, value='')
        self.textCtrl5.SetEditable(False)

        self.button3 = wx.Button(id=wxID_HISTORICOPRODUCTOBUTTON3,
              label='Limpiar', name='button3', parent=self.panel1,
              pos=wx.Point(792, 24), size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_HISTORICOPRODUCTOBUTTON3)

        self.button2 = wx.Button(id=wxID_HISTORICOPRODUCTOBUTTON2,
              label='Salir', name='button2', parent=self.panel1,
              pos=wx.Point(792, 432), size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_HISTORICOPRODUCTOBUTTON2)

        self.grid1 = wx.grid.Grid(id=wxID_HISTORICOPRODUCTOGRID1, name='grid1',
              parent=self.panel1, pos=wx.Point(16, 88), size=wx.Size(856, 320),
              style=0)

        self.staticText5 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT5,
              label='Central', name='staticText5', parent=self.panel1,
              pos=wx.Point(8, 416), size=wx.Size(35, 13), style=0)

        self.textCtrl6 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL6,
              name='textCtrl6', parent=self.panel1, pos=wx.Point(8, 432),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl6.SetEditable(False)

        self.textCtrl7 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL7,
              name='textCtrl7', parent=self.panel1, pos=wx.Point(88, 432),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl7.SetEditable(False)

        self.textCtrl8 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL8,
              name='textCtrl8', parent=self.panel1, pos=wx.Point(168, 432),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl8.SetEditable(False)

        self.textCtrl9 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL9,
              name='textCtrl9', parent=self.panel1, pos=wx.Point(248, 432),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl9.SetEditable(False)

        self.staticText6 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT6,
              label='Parana', name='staticText6', parent=self.panel1,
              pos=wx.Point(88, 416), size=wx.Size(34, 13), style=0)

        self.staticText7 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT7,
              label='Saska', name='staticText7', parent=self.panel1,
              pos=wx.Point(168, 416), size=wx.Size(28, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT8,
              label='Peatonal StaFe', name='staticText8', parent=self.panel1,
              pos=wx.Point(248, 416), size=wx.Size(73, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT9,
              label='Talle', name='staticText9', parent=self.panel1,
              pos=wx.Point(240, 48), size=wx.Size(22, 13), style=0)

        self.textCtrl10 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL10,
              name='textCtrl10', parent=self.panel1, pos=wx.Point(240, 64),
              size=wx.Size(56, 21), style=0, value='')
        self.textCtrl10.SetEditable(False)

        self.staticText10 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT10,
              label='Color', name='staticText10', parent=self.panel1,
              pos=wx.Point(296, 48), size=wx.Size(25, 13), style=0)

        self.textCtrl11 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL11,
              name='textCtrl11', parent=self.panel1, pos=wx.Point(296, 64),
              size=wx.Size(112, 21), style=0, value='')
        self.textCtrl11.SetEditable(False)

        self.staticText11 = wx.StaticText(id=wxID_HISTORICOPRODUCTOSTATICTEXT11,
              label='Cod.Art.Proveedor', name='staticText11',
              parent=self.panel1, pos=wx.Point(440, 48), size=wx.Size(92, 13),
              style=0)

        self.textCtrl12 = wx.TextCtrl(id=wxID_HISTORICOPRODUCTOTEXTCTRL12,
              name='textCtrl12', parent=self.panel1, pos=wx.Point(440, 64),
              size=wx.Size(100, 21), style=0, value='')
        self.textCtrl12.SetEditable(False)

        self.checkBox1 = wx.CheckBox(id=wxID_HISTORICOPRODUCTOCHECKBOX1,
              label='Consulta directa a sucursales', name='checkBox1',
              parent=self.panel1, pos=wx.Point(16, 56), size=wx.Size(160, 13),
              style=0)
        self.checkBox1.SetValue(False)

        self.button4 = wx.Button(id=wxID_HISTORICOPRODUCTOBUTTON4,
              label='Imprimir', name='button4', parent=self.panel1,
              pos=wx.Point(344, 432), size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_HISTORICOPRODUCTOBUTTON4)

        self.checkBox2 = wx.CheckBox(id=wxID_HISTORICOPRODUCTOCHECKBOX2,
              label='Omitir informacion de otras Sucursales', name='checkBox2',
              parent=self.panel1, pos=wx.Point(552, 64), size=wx.Size(240, 13),
              style=0)
        self.checkBox2.SetValue(False)
        self.checkBox2.Bind(wx.EVT_CHECKBOX, self.OnOmitirSucursales,
              id=wxID_HISTORICOPRODUCTOCHECKBOX2)

    def __init__(self, parent,miptc):
        self._init_ctrls(parent)
        self.crearGrilla()
        self.crearTabla()
        self.textCtrl2.SetFocus()
        if miptc<>"":
            self.textCtrl2.SetLabel(miptc)
            self.OnBuscar(None)

    def OnSalir(self, event):
        self.Close()

    def OnLimpiar(self, event):
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl3.SetLabel("")
        self.textCtrl4.SetLabel("")
        self.textCtrl5.SetLabel("")
        self.textCtrl6.SetLabel("")
        self.textCtrl7.SetLabel("")
        self.textCtrl8.SetLabel("")
        self.textCtrl9.SetLabel("")
        self.textCtrl10.SetLabel("")
        self.textCtrl11.SetLabel("")
        self.textCtrl12.SetLabel("")
        self.grid1.ClearGrid()
        for i in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.crearTabla()
        self.textCtrl2.SetFocus()

    def autosizegrilla(self):
        for i in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(i,True)
        self.grid1.Refresh()
       
    def crearGrilla(self):
        renglon = 1
        columnas =['Fecha','Operacion','Tipo','Numero\nDocumento',\
                   'Sucursal\nOrigen','Sucursal\nDestino',\
                   'Estado/\nCorreg/Visto','Cant','Entra','Sale','Stock\nLocal']
        #operacion = COMPRA, VENTA, DEVOL, TRANSF
        #tipo = 1 en 1, 2 en 2
        self.grid1.CreateGrid(renglon,len(columnas))
        
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)
        self.autosizegrilla()

        self.grid1.EnableEditing(False)
        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)

    def buscarProducto(self,codsussan=""):
        print "Buscando datos del Producto.",
        if codsussan=="": return ()
        sucursal = utiles.getSucursalActiva()
        sucursal = int(sucursal)-1
        consultaSQL = "SELECT * FROM productos WHERE codsussan='"+str(codsussan)+"' "
        resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,sucursal)
        if resultados == () or resultados == None:
            return ()
        return resultados[0][0]
    
    def buscarCompra(self,codsussan="",talle="",color=""):
        print "Buscando Compras.",
        if codsussan == "":
            return ()
        opcion1 = opcion2 = ""
        if talle<>"":
            opcion1 = " AND p2.talle='"+talle+"'"
        if color<>"":
            opcion2 = " AND p2.color='"+color+"'"
        r1 = "SELECT p1.idfactura,p1.nrofactura,p1.idproveedor, \n"
        r2 = "       p1.fechafactura,p1.fechaingreso,p1.en1oen2, \n"
        r3 = "       p2.codsussan,p2.talle,p2.color,p2.cantidad,p2.costounidad \n"
        r4 = "FROM compras AS p1, \n"
        r5 = "     compras_items AS p2 \n"
        r6 = "WHERE p2.codsussan='"+codsussan+"' \n"
        r7 = "      AND p2.idfactura=p1.idfactura \n"
        r8 = "    "+opcion1+opcion2
        r9 = "ORDER BY p1.fechaingreso,p1.nrofactura "
        consultaSQL = r1+r2+r3+r4+r5+r6+r7+r8+r9
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ()
        return resultados[0]
        
    def buscarStock(self,ptc):
        print "Buscando Stock.",
        if ptc=="": return ()
        consultaSQL = "SELECT * FROM stock WHERE ptc='"+ptc+"'"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ()
        return resultados[0]
        
    def buscarDevoluciones(self,ptc="",codsussan=""):
        print "Buscando Devoluciones.",
        if ptc<>"":
            opcion1 = " ptc='"+ptc+"' "
        else:
            if codsussan<>"":
                opcion1 = " codsussan='"+codsussan+"' "
            else:
                return ()
        r1 = "SELECT p1.idDevolucion,p1.fecha,p2.ptc,p2.codsussan, "
        r2 = "       p2.talle,p2.color,p2.cantidad,p2.monto "
        r3 = "FROM comprasdevoluciones AS p1, "
        r4 = "     comprasdevoluciones_items AS p2 "
        r5 = "WHERE p1.idDevolucion=p2.idDevolucion AND "+opcion1
        consultaSQL = r1+r2+r3+r4+r5
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ()
        return resultados[0]

    def buscarSenia(self,ptc=""):
        print "Buscando Senias.",
        if ptc<>"":
            opcion1 = " ptc='"+ptc+"' "
        else:
            return ()
        r1 = "SELECT p1.idsenia,p1.fecha,p1.ptc,p1.codsussan,p1.idcliente, "
        r2 = "       p2.talle,p2.color,p1.cantidad,p1.monto,p3.descri "
        r3 = "FROM ventastienesenias AS p1, "
        r4 = "     producto_talle_color AS p2,productos AS p3 "
        r5 = "WHERE p1.ptc=p2.id "
        r6 = "      AND p1.codsussan=p3.codsussan"
        r7 = "      AND "+opcion1
        consultaSQL = r1+r2+r3+r4+r5+r6+r7
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ()
        return resultados[0]

    def buscarCambioPrecio(self,ptc=""):
        print "Buscando Cambios de Precios.",
        if ptc<>"":
            opcion1 = " ptc='"+ptc+"' "
        else:
            return ()
        r1 = "SELECT p1.idcambio,p1.fecha,p1.ptc,p1.codsussan,p1.precioViejo, "
        r2 = "       p2.talle,p2.color,p1.precioNuevo "
        r3 = "FROM cambiosprecios AS p1, "
        r4 = "     producto_talle_color AS p2 "
        r5 = "WHERE p1.ptc=p2.id "
        r6 = ""
        r7 = "      AND "+opcion1
        consultaSQL = r1+r2+r3+r4+r5+r6+r7
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ()
        return resultados[0]

    def buscarVentas(self,ptc=""):
        sql = "SELECT codsucursal FROM sucursales WHERE 1"
        sucursales = consultasBD.ordenCruda(sql)
        miSucursal = utiles.getSucursalActiva()
        listaSucursales = []
        for item in sucursales:
            listaSucursales.append(int(item[0])-1)

        print "Buscando Ventas.",
        if ptc=="":return ()
        r1 = "SELECT p1.nrofactura,p1.idventa,p1.fecha,p1.idcliente, \n"
        r2 = "       p1.idformaticket,p1.sucursal,p1.usuario, \n"
        r3 = "       p2.ptc,p2.cantidad,p2.preciolista,p2.descuento, \n"
        r4 = "       p2.preciofinal \n"
        r5 = "FROM ventas AS p1, ventastieneproductos AS p2 \n"
        r6 = "WHERE p2.ptc='"+ptc+"' AND p2.idticket=p1.idventa "
        consultaSQL = r1+r2+r3+r4+r5+r6
        miresultado = []
        for sucursal in listaSucursales:
            if self.checkBox2.GetValue():
                if str(sucursal+1)!=miSucursal: continue
            if self.checkBox1.GetValue():
                resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,sucursal)
            else:
                resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,sucursal)
            if resultados == () or resultados == None:
                miresultado.append([])
            else:
                miresultado.append(resultados[0])
        return miresultado

    def buscarAjustes(self,ptc=""):
        sql = "SELECT codsucursal FROM sucursales WHERE 1"
        sucursales = consultasBD.ordenCruda(sql)
        miSucursal = utiles.getSucursalActiva()
        listaSucursales = []
        for item in sucursales:
            listaSucursales.append(int(item[0])-1)
        #1-70634
        print "Buscando Ajustes.",
        if ptc=="":return ()
        r1 = "SELECT p1.ptc,p1.codsussan,p1.fechaaprobado, \n"
        r2 = "       p1.tipooperacion,p1.sucursal, \n"
        r3 = "       p1.diferencia AS cantidad,p1.proveedor,p1.observaciones \n"
        r4 = "FROM ajustes AS p1 \n"
        r5 = "WHERE p1.ptc='"+ptc+"' AND p1.aprobacion='1' "
        consultaSQL = r1+r2+r3+r4+r5
        miresultado = []
        for sucursal in listaSucursales:
            if self.checkBox2.GetValue():
                if str(sucursal+1)!=miSucursal: continue
            if self.checkBox1.GetValue():
                resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,sucursal)
            else:
                resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,sucursal)
            if resultados == () or resultados == None:
                miresultado.append([])
            else:
                miresultado.append(resultados[0])
        return miresultado

    def buscarTransferencias(self,ptc=""):
        print "Buscando Transferencias.",
        if ptc=="":return ()
        r1 = "SELECT p1.id, p1.idsucorigen, p1.idsucdestino, p1.fecha, \n"
        r2 = "       p1.estado, p2.ptc, p2.cant \n"
        r3 = "FROM transferencias AS p1, \n"
        r4 = "     transferenciastieneproductos AS p2 \n"
        r5 = "WHERE p1.id=p2.idtransferencia AND p2.ptc='"+ptc+"' \n"
        consultaSQL = r1+r2+r3+r4+r5
        
        if self.checkBox1.GetValue():
            resultados1 = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados1 = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        r1 = "SELECT idtransferencia AS id, idsucorigen, idsucdestino, \n"
        r2 = "       fecha, estado, ptc, cantidad AS cant FROM transferencia \n"
        r3 = "WHERE ptc='"+ptc+"' "
        consultaSQL = r1+r2+r3
        
        if self.checkBox1.GetValue():
            resultados2 = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados2 = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)

        if (resultados1 == () or resultados1 == None) \
           and \
           (resultados2 == () or resultados2 == None):
            return ()

        if resultados1 == () or resultados1 == None:
            resultados1 = ((),())
        if resultados2 == () or resultados2 == None:
            resultados2 = ((),())

        diccionario = []
        for item in resultados1[0]:
            diccionario.append(item)
        for item in resultados2[0]:
            diccionario.append(item)
        return diccionario
    
    def buscarDiscrepancias(self,ptc=""):
        print "Buscando Discrepancias.",
        if ptc=="":return ()
        r1 = "SELECT * \n"
        r2 = "FROM discrepancias \n"
        r3 = "WHERE ptc='"+ptc+"'"
        consultaSQL = r1+r2+r3
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ()
        return resultados[0]

    def buscarFechaTransferencia(self,trans=""):
        if trans=="":return ""
        consultaSQL = "SELECT fecha FROM transferencias WHERE id='"+trans+"'"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ""
        return str(resultados[0][0]["fecha"])[:10]

    def buscarProveedor(self,idproveedor=""):
        print "Buscando nombre del proveedor.",
        if idproveedor=="":
            return ""
        consultaSQL = "SELECT nombre FROM proveedor WHERE idproveedor='"+idproveedor+"'"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ""
        return resultados[0][0]["nombre"]

    def buscarPTC(self,codsussan="",talle="",color=""):
        print "Buscando PTC.",
        if codsussan == "":return ""
        if color == "":return ""
        if talle == "":return ""
        r1 = "SELECT id FROM producto_talle_color \n"
        r2 = "WHERE codsussan='"+codsussan+"' AND \n"
        r3 = "      talle='"+talle+"' AND\n"
        r4 = "      color='"+color+"' "
        consultaSQL = r1+r2+r3+r4
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ""
        try:
            repuesta = resultados[0][0]["id"]
        except:
            repuesta = ""
        return repuesta

    def buscarCodSussan(self,ptc=""):
        print "Buscando codsussan, talle y color.",
        if ptc=="":
            return "","",""
        consultaSQL = "SELECT codsussan,talle,color FROM producto_talle_color WHERE id='"+ptc+"'"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return "","",""
        try:
            repuesta = resultados[0][0]["codsussan"],resultados[0][0]["talle"],resultados[0][0]["color"]
        except:
            repuesta = ""
        return repuesta
    
    def buscarColor(self,color=""):
        print "Buscando nombre color.",
        if color=="":
            return color+" / "
        consultaSQL = "SELECT nombre FROM colores WHERE idcolor='"+color+"'"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return color+" / "
        try:
            repuesta = color+" / "+resultados[0][0]["nombre"]
        except:
            repuesta = ""
        return repuesta

    def buscarCodArtProv(self,codsussan=""):
        print "Buscando codigo articulo proveedor.",
        if codsussan=="":
            return ""
        consultaSQL = "SELECT codartprov FROM producto_codartprov WHERE codsussan='"+codsussan+"'"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(consultaSQL,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(consultaSQL,0)
        if resultados == () or resultados == None:
            return ""
        try:
            repuesta = resultados[0][0]["codartprov"]
        except:
            repuesta = ""
        return repuesta

    def listaSucursales(self):
        sql = "SELECT codsucursal,nombre FROM sucursales WHERE 1"
        if self.checkBox1.GetValue():
            resultados = consultasBD.ordenCrudaDictRemota(sql,0)
        else:
            resultados = consultasBD.ordenCrudaDictRemota2(sql,0)
        if resultados == () or resultados == None:
            return {"":""}
        resultados = resultados[0]
        sucursales = {}
        for item in resultados:
            sucursales[item["codsucursal"]]=item["nombre"]
        sucursales[""]=""
        return sucursales

    def crearTabla(self):
        #creamos tabla provisoria para guardar resultados
        sql = "DROP TABLE IF EXISTS listadohistoricoproductos"
        consultasBD.ordenCruda(sql)
        r01 = "CREATE TABLE listadohistoricoproductos (`id` INT( 5 ) NOT NULL AUTO_INCREMENT ,"
        r02 = "`fecha` VARCHAR( 10 ) NOT NULL , "
        r03 = "`operacion` VARCHAR( 10 ) NOT NULL , "
        r04 = "`tipo` VARCHAR( 2 ) NOT NULL , "
        r05 = "`documento` VARCHAR( 10 ) NOT NULL , "
        r06 = "`sucursal` VARCHAR( 2 ) NOT NULL , "
        r07 = "`sucdestino` VARCHAR( 2 ) NOT NULL DEFAULT '', "
        r08 = "`estado` VARCHAR( 2 ) NOT NULL DEFAULT '', "
        r09 = "`codartprov` VARCHAR( 20 ) NOT NULL DEFAULT '', "
        r10 = "`ptc` VARCHAR( 50 ) NOT NULL , "
        r11 = "`codsussan` VARCHAR( 50 ) NOT NULL , "
        r12 = "`descripcion` VARCHAR( 50 ) NOT NULL , "
        r13 = "`talle` VARCHAR( 3 ) NOT NULL, "
        r14 = "`color` VARCHAR( 20 ) NOT NULL, "
        r15 = "`cantidad` VARCHAR( 10 ) NOT NULL, "
        r16 = "PRIMARY KEY (  `id` )) ENGINE = INNODB"
        sql = r01+r02+r03+r04+r05+r06+r07+r08+r09+r10+r11+r12+r13+r14+r15+r16
        print "Creando tabla auxiliar"
        consultasBD.ordenCruda(sql)

    def mostrarResultados(self,codsussan,producto,compras,devoluciones,ventas,\
                          transferencias,discrepancias,stock):
        estrellas = 70
        print "CODSUSSAN",codsussan
        print "*"*estrellas
        print "PRODUCTO",producto
        print "*"*estrellas
        print "COMPRAS",compras
        print "*"*estrellas
        print "DEVOLUCIONES",devoluciones
        print "*"*estrellas
        print "VENTAS"
        for item in ventas:
            print item
        print "*"*estrellas
        print "TRANSFERENCIAS",transferencias
        print "*"*estrellas
        print "DISCREPANCIAS",discrepancias
        print "*"*estrellas
        print "STOCK",stock

    #buscarProducto(codsussan)
    #buscarCompra(codsussan)
    #buscarDevoluciones(ptc,codsussan)
    #buscarVentas(ptc)
    #buscarTransferencias(ptc)
    #buscarStock(ptc)
    #buscarProveedor(idproveedor)
    #buscarPTC(codsussan,talle,color)
    #buscarCodSussan(ptc)
    #buscarColor(color)
    
    def buscarPorPTC(self,ptc):
        sucursal = utiles.getSucursalActiva()
        miSucursal = sucursal
        codsussan,talle,color = self.buscarCodSussan(ptc)
        codartprov = self.buscarCodArtProv(codsussan)
        self.textCtrl1.SetLabel(codsussan)
        producto = self.buscarProducto(codsussan)
        idproveedor = descripcion = ""
        if producto <> ():
            idproveedor = producto["proveedor"]
            descripcion = producto["descri"]
        if sucursal=="1": #estas tareas se llevan a cabo solo en central
            compras = self.buscarCompra(codsussan,talle,color)
            devoluciones = self.buscarDevoluciones(ptc,codsussan)
            cambioprecio = self.buscarCambioPrecio(ptc)
        else:
            compras = ()
            devoluciones = ()
            cambioprecio = ()
        senias = self.buscarSenia(ptc)
        ventas = self.buscarVentas(ptc)
        ajustes = self.buscarAjustes(ptc)
        transferencias = self.buscarTransferencias(ptc)
        aux = self.buscarDiscrepancias(ptc)
        discrepancias = []
        for item in aux:
            dic_aux = {}
            if item["fecha"] == None:
                item["fecha"] = self.buscarFechaTransferencia(item["trans"])
            dic_aux["trans"]=item["trans"]
            dic_aux["ptc"]=item["ptc"]
            dic_aux["cant"]=item["cant"]
            dic_aux["tipo"]=item["tipo"]
            dic_aux["corregido"]=item["corregido"]
            dic_aux["visto"]=item["visto"]
            dic_aux["fecha"]=item["fecha"]
            discrepancias.append(dic_aux)
        
        stock = self.buscarStock(ptc)
        nombreProveedor = self.buscarProveedor(idproveedor)
        color = self.buscarColor(color)
        
        self.textCtrl3.SetLabel(descripcion)
        self.textCtrl4.SetLabel(idproveedor)
        self.textCtrl5.SetLabel(nombreProveedor)
        
#        self.mostrarResultados(codsussan,producto,compras,devoluciones,ventas,transferencias,discrepancias,stock)

        camposFijos = "codartprov,ptc,codsussan,descripcion,talle,color"
        valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"

        #p1.idfactura,p1.nrofactura,p1.idproveedor,p1.fechafactura,
        #p1.fechaingreso,p1.en1oen2,p2.codsussan,p2.talle,p2.color,
        #p2.cantidad,p2.costounidad
        for item in compras:
            fechadocumento = str(item["fechafactura"]).split(" ")[0]
            operacion = "COMPRA"
            tipo = item["en1oen2"]
            documento = item["nrofactura"]
            sucursal = utiles.getSucursalActiva()
            cantidad = str(item["cantidad"])

            campos = " listadohistoricoproductos(fecha,operacion,tipo,"
            campos+= "documento,sucursal,"+camposFijos+",cantidad)"
            valores = "('"+fechadocumento+"','"+operacion+"','"+tipo+"','"
            valores+= documento+"','"+sucursal+valoresFijos+cantidad+"')"
            id = consultasBD.executaInsertSQL(self,campos,valores)
        #p1.idDevolucion,p1.fecha,p2.ptc,p2.codsussan,
        #p2.talle,p2.color,p2.cantidad,p2.monto
        for item in devoluciones:
            fechadocumento = str(item["fecha"]).split(" ")[0]
            operacion = "DEVOL"
            tipo = ""
            documento = item["idDevolucion"]
            sucursal = "1"
            cantidad = str(item["cantidad"])
            
            campos = " listadohistoricoproductos(fecha,operacion,tipo,"
            campos+= "documento,sucursal,"+camposFijos+",cantidad)"
            valores = "('"+fechadocumento+"','"+operacion+"','"+tipo+"','"
            valores+= documento+"','"+sucursal+valoresFijos+cantidad+"')"
            id = consultasBD.executaInsertSQL(self,campos,valores)
        #p1.nrofactura,p1.idventa,p1.fecha,p1.idcliente,p1.idformaticket,
        #p1.sucursal,p1.usuario,p2.ptc,p2.cantidad,p2.preciolista,
        #p2.descuento,p2.preciofinal
        for vtassucursal in ventas:
            for item in vtassucursal:
                fechadocumento = str(item["fecha"]).split(" ")[0]
                operacion = "VENTA"
                tipo = str(item["idformaticket"])
                documento = str(item["nrofactura"])
                sucursal = item["sucursal"]
                cantidad = str(item["cantidad"])
                aux = descripcion
                descripcion = "Cliente "+str(item["idcliente"])
                valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"
                valoresFijos+= descripcion+"','"+talle+"','"+color+"','"

                campos = " listadohistoricoproductos(fecha,operacion,tipo,"
                campos+= "documento,sucursal,"+camposFijos+",cantidad)"
                valores = "('"+fechadocumento+"','"+operacion+"','"+tipo+"','"
                valores+= documento+"','"+sucursal+valoresFijos+cantidad+"')"
                id = consultasBD.executaInsertSQL(self,campos,valores)

                descripcion = aux
                valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"
                valoresFijos+= descripcion+"','"+talle+"','"+color+"','"

        #p1.id,p1.idsucorigen,p1.idsucdestino,p1.fecha,p1.estado,p2.ptc,p2.cant
        for senia in senias:
            operacion = "SENIA"
            fecha = str(senia["fecha"])
            tipo = ""
            documento = str(senia["idsenia"])
            sucursal = utiles.getSucursalActiva()
            cantidad = str(senia["cantidad"])
            idcliente = str(senia["idcliente"])
            aux = descripcion
            descripcion = "Cliente "+idcliente
            valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"
            campos = " listadohistoricoproductos(fecha,operacion,tipo,"
            campos+= "documento,sucursal,"+camposFijos+",cantidad)"
            valores = "('"+fecha+"','"+operacion+"','"+tipo+"','"
            valores+= documento+"','"+sucursal+valoresFijos+cantidad+"')"
            id = consultasBD.executaInsertSQL(self,campos,valores)
            descripcion = aux
            valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"
        for cp in cambioprecio:
            operacion = "PRECIOS"
            fecha = str(cp["fecha"])
            tipo = ""
            documento = str(cp["idcambio"])
            sucursal = utiles.getSucursalActiva()
            cantidad = ""
            precioViejo = str(cp["precioViejo"])
            precioNuevo = str(cp["precioNuevo"])
            aux = descripcion
            descripcion = precioViejo+" -> "+precioNuevo
            valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"
            campos = " listadohistoricoproductos(fecha,operacion,tipo,"
            campos+= "documento,sucursal,"+camposFijos+",cantidad)"
            valores = "('"+fecha+"','"+operacion+"','"+tipo+"','"
            valores+= documento+"','"+sucursal+valoresFijos+cantidad+"')"
            id = consultasBD.executaInsertSQL(self,campos,valores)
            descripcion = aux
            valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"
        for ajuste in ajustes:
            for item in ajuste:
                operacion = "AJUSTE"
                fecha = str(item["fechaaprobado"])
                tipo = str(item["tipooperacion"]) #0 suma al stock, 1 resta al stock
                documento = ""
                sucursal = str(item["sucursal"])
                if sucursal!=miSucursal: continue
                cantidad = str(abs(item["cantidad"]))
                aux = descripcion
                descripcion = str(item["observaciones"])
                valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"
                campos = " listadohistoricoproductos(fecha,operacion,tipo,"
                campos+= "documento,sucursal,"+camposFijos+",cantidad)"
                valores = "('"+fecha+"','"+operacion+"','"+tipo+"','"
                valores+= documento+"','"+sucursal+valoresFijos+cantidad+"')"
                id = consultasBD.executaInsertSQL(self,campos,valores)
                descripcion = aux
                valoresFijos = "','"+codartprov+"','"+ptc+"','"+codsussan+"','"+descripcion+"','"+talle+"','"+color+"','"
        miSucursal = utiles.getSucursalActiva()
        for item in transferencias:
            fechadocumento = str(item["fecha"]).split(" ")[0]
            operacion = "TRANSF"
            tipo = ""
            documento = item["id"]
            sucursal = str(item["idsucorigen"])
            if self.checkBox2.GetValue():
                if sucursal!=miSucursal: continue
            sucdestino  = str(item["idsucdestino"])
            if fechadocumento>"2012-06-12":
                estado = str(item["estado"])
                if estado=="1":
                    estado="0"
                else:
                    estado="1"
            else:
                estado = str(item["estado"])
            cantidad = str(item["cant"])
            
            campos = " listadohistoricoproductos(fecha,operacion,tipo,"
            campos+= "documento,sucursal,sucdestino,estado,"
            campos+= camposFijos+",cantidad)"
            valores = "('"+fechadocumento+"','"+operacion+"','"+tipo+"','"
            valores+= documento+"','"+sucursal+"','"+sucdestino+"','"+estado
            valores+= valoresFijos+cantidad+"')"
            id = consultasBD.executaInsertSQL(self,campos,valores)
        #trans,ptc,cant,tipo,corregido,visto,fecha
        for item in discrepancias:
            fechadocumento = str(item["fecha"]).split(" ")[0]
            operacion = "DISCREP"
            tipo = str(item["tipo"])
            documento = str(item["trans"])
            sucursal = "1"
            estado = str(item["corregido"])+" / "+str(item["visto"])
            cantidad = str(item["cant"])
            
            campos = " listadohistoricoproductos(fecha,operacion,tipo,"
            campos+= "documento,sucursal,estado,"
            campos+= camposFijos+",cantidad)"
            valores = "('"+fechadocumento+"','"+operacion+"','"+tipo+"','"
            valores+= documento+"','"+sucursal+"','"+estado
            valores+= valoresFijos+cantidad+"')"
            id = consultasBD.executaInsertSQL(self,campos,valores)
        #visualizando stock actual
        self.textCtrl6.SetLabel("0")
        self.textCtrl7.SetLabel("0")
        self.textCtrl8.SetLabel("0")
        self.textCtrl9.SetLabel("0")
        sucursal = int(utiles.getSucursalActiva())
        if sucursal == 1:
            self.textCtrl6.SetBackgroundColour(VERDE)
        if sucursal == 2:
            self.textCtrl7.SetBackgroundColour(VERDE)
        if sucursal == 3:
            self.textCtrl8.SetBackgroundColour(VERDE)
        if sucursal == 4:
            self.textCtrl9.SetBackgroundColour(VERDE)
        for item in stock:
            if item["sucursal"]=="1":
                self.textCtrl6.SetLabel(str(item["stock"]))
                continue
            if item["sucursal"]=="2":
                self.textCtrl7.SetLabel(str(item["stock"]))
                continue
            if item["sucursal"]=="3":
                self.textCtrl8.SetLabel(str(item["stock"]))
                continue
            if item["sucursal"]=="4":
                self.textCtrl9.SetLabel(str(item["stock"]))
        self.textCtrl10.SetLabel(talle)
        self.textCtrl11.SetLabel(color)
        self.textCtrl12.SetLabel(codartprov)
        
    def OnBuscar(self, event):
        ptc = self.textCtrl2.GetLabel()
        codsussan = self.textCtrl1.GetLabel()
        if ptc=="" and codsussan=="":
            utiles.mensaje(None,"Debe informar PTC o codsussan")
            self.textCtrl2.SetFocus()
            return
        self.crearTabla()
        if codsussan<>"":
            #buscamos por codsussan
            return
        #buscamos por ptc
        self.buscarPorPTC(ptc)
        self.llenarGrillaPorPTC()
        self.button3.SetFocus()

    def llenarGrillaPorPTC(self):
        sql = "SELECT * FROM listadohistoricoproductos WHERE 1 ORDER BY fecha"
        resultados = consultasBD.ordenCrudaDict(sql)
        if resultados == None or resultados == ():
            self.button3.SetFocus()
            return
        sucursales = self.listaSucursales()
        misucursal = utiles.getSucursalActiva()
        stock = 0
        #Fecha,Operacion,Tipo,Nro Doc,Suc Origen,Suc Dest,Estado/Correg/Visto,Cant
        for fila,item in enumerate(resultados):
            fecha = utiles.invertirFecha2(str(item["fecha"]))
            operacion = str(item["operacion"])
            tipo = str(item["tipo"])
            documento = str(item["documento"])
            sucorigen = str(item["sucursal"])
            sucdestino = str(item["sucdestino"])
            estado = str(item["estado"])
            cantidad = str(item["cantidad"])
            self.grid1.SetCellValue(fila,0,fecha)
            self.grid1.SetCellValue(fila,1,operacion)
            self.grid1.SetCellValue(fila,2,tipo)
            self.grid1.SetCellValue(fila,3,documento)
            self.grid1.SetCellValue(fila,4,sucursales[sucorigen])
            self.grid1.SetCellValue(fila,5,sucursales[sucdestino])
            self.grid1.SetCellValue(fila,6,estado)
            self.grid1.SetCellValue(fila,7,cantidad)
            self.grid1.SetCellAlignment(fila,7,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)

            entra = 8
            sale = 9
            if operacion == "COMPRA":
                if misucursal == sucorigen:
                    self.grid1.SetCellValue(fila,entra,cantidad)
                    self.grid1.SetCellAlignment(fila,entra,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                    stock+=int(cantidad)
            if operacion == "DEVOL":
                if misucursal == sucorigen:
                    self.grid1.SetCellValue(fila,sale,cantidad)
                    self.grid1.SetCellAlignment(fila,sale,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                    stock-=int(cantidad)
            if operacion == "VENTA":
                if misucursal == sucorigen:
                    self.grid1.SetCellValue(fila,sale,cantidad)
                    self.grid1.SetCellAlignment(fila,sale,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                    stock-=int(cantidad)
                descripcion = str(item["descripcion"])
                self.grid1.SetCellValue(fila,6,descripcion)
            if operacion == "AJUSTE":
                if misucursal == sucorigen:
                    cantidad = str(abs(int(cantidad)))
                    if tipo=="0": #entra
                        self.grid1.SetCellValue(fila,entra,cantidad)
                        self.grid1.SetCellAlignment(fila,entra,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                        cantidad = str(int(cantidad)*-1)
                    else: #sale
                        self.grid1.SetCellValue(fila,sale,cantidad)
                        self.grid1.SetCellAlignment(fila,sale,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                    stock-=int(cantidad)
                descripcion = str(item["descripcion"])
                self.grid1.SetCellValue(fila,6,descripcion)
            if operacion == "TRANSF":
                if misucursal == sucorigen:
                    self.grid1.SetCellValue(fila,sale,cantidad)
                    self.grid1.SetCellAlignment(fila,sale,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                    stock-=int(cantidad)
                if misucursal == sucdestino:
                    self.grid1.SetCellValue(fila,entra,cantidad)
                    self.grid1.SetCellAlignment(fila,entra,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
                    stock+=int(cantidad)
            if operacion == "SENIA":
                descripcion = str(item["descripcion"])
                self.grid1.SetCellValue(fila,6,descripcion)
            if operacion == "PRECIOS":
                descripcion = str(item["descripcion"])
                self.grid1.SetCellValue(fila,6,descripcion)
            if misucursal == sucdestino or misucursal == sucorigen :
                self.grid1.SetCellValue(fila,10,str(stock))
                self.grid1.SetCellAlignment(fila,10,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            else:
                self.grid1.SetCellValue(fila,10,"-")
                self.grid1.SetCellAlignment(fila,10,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            self.grid1.AppendRows()

        self.autosizegrilla()
        self.button3.SetFocus()

    def OnImprimir(self, event):
        print "Imprimir"

        f=open("c:\\erpsussan.doc\\reporte-historicoProducto.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 50
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1
        
        ptc = self.textCtrl2.GetLabel()
        codsussan = self.textCtrl1.GetLabel()
        descripcion = self.textCtrl3.GetLabel()
        proveedor = self.textCtrl5.GetLabel()+" / "+self.textCtrl4.GetLabel()
        talle = self.textCtrl10.GetLabel()
        color = self.textCtrl11.GetLabel()
        codartprov = self.textCtrl12.GetLabel()
        stkCentral = self.textCtrl6.GetLabel()
        stkParana = self.textCtrl7.GetLabel()
        stkSaska = self.textCtrl8.GetLabel()
        stkPeatonal = self.textCtrl9.GetLabel()

        def encabezadoPagina(texto):
            fecha = utiles.obtenerFecha("d-m-Y")

            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="50%">\n'
            a+= 'SUSSAN BOUTIQUE - Hist&oacute;rico de Producto\n'
            a+= '</td>\n'
            a+= '<td valign="center" align="right" width="50%">\n'
            a+= 'Fecha '+fecha+'<br>'
            a+= 'P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'\n'
            a+= '</td>\n'
            a+= '</table>\n'
            a+= '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="left" width="20%">\n'
            a+= 'PTC <strong>'+ptc+'</strong> CodSussan <strong>'+codsussan+'</strong>\n'
            a+= '</td>\n'
            a+= '<td valign="top" align="left" width="80%">\n'
            a+= 'Descripcion: <strong>'+descripcion+'</strong> Talle: '
            a+= '<strong>'+talle+'</strong> Color <strong>'+color+'</strong><br> \n'
            a+= '</strong> Proveedor: <strong>'+proveedor
            a+= '</strong> Cod.Art.Provr: <strong>'+codartprov+'</strong>\n'
            a+= '</td>'
            a+= '</tr></table>'
            
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            a = '<hr>'

            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="center">Fecha</td> \n'
            a+= '<td valign="top" align="left">Operaci&oacute;n</td> \n'
            a+= '<td valign="top" align="center">Tipo</td> \n'
            a+= '<td valign="top" align="left">Nro.Doc.</td> \n'
            a+= '<td valign="top" align="left">Sucursal<br>Origen</td> \n'
            a+= '<td valign="top" align="left">Sucursal<br>Destino</td> \n'
            a+= '<td valign="top" align="left">Observaciones-Estado<br>Corregido-Visto</td> \n'
            a+= '<td valign="top" align="right">Cant.</td> \n'
            a+= '<td valign="top" align="right">Entra</td> \n'
            a+= '<td valign="top" align="right">Sale</td> \n'
            a+= '<td valign="top" align="right">Stock<br>Local</td> \n'
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td colspan="11"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        renglon = 0
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0) == "": continue
            fecha = self.grid1.GetCellValue(fil,0)
            operacion = self.grid1.GetCellValue(fil,1)
            tipo = self.grid1.GetCellValue(fil,2)
            nrodoc = self.grid1.GetCellValue(fil,3)
            sucorigen = self.grid1.GetCellValue(fil,4)
            sucdestin = self.grid1.GetCellValue(fil,5)
            observaciones = self.grid1.GetCellValue(fil,6)
            cantidad = self.grid1.GetCellValue(fil,7)
            entra = self.grid1.GetCellValue(fil,8)
            sale = self.grid1.GetCellValue(fil,9)
            stock = self.grid1.GetCellValue(fil,10)

            font1 = '<font size="1.5">'
            font2 = '</font>'
            font1 = font2 = ""
            cadena = '<tr> \n'
            cadena+= '<td valign="center" align="center">'+font1+fecha+font2+'</td> \n'
            cadena+= '<td valign="center" align="left">'+font1+operacion+font2+'</td> \n'
            cadena+= '<td valign="center" align="center">'+font1+tipo+font2+'</td> \n'
            cadena+= '<td valign="center" align="left">'+font1+nrodoc+font2+'</td> \n'
            cadena+= '<td valign="center" align="left">'+font1+sucorigen+font2+'</td> \n'
            cadena+= '<td valign="center" align="left">'+font1+sucdestin+font2+'</td> \n'
            cadena+= '<td valign="center" align="left">'+font1+observaciones+font2+'</td> \n'
            cadena+= '<td valign="center" align="right">'+font1+cantidad+font2+'</td> \n'
            cadena+= '<td valign="center" align="right">'+font1+entra+font2+'</td> \n'
            cadena+= '<td valign="center" align="right">'+font1+sale+font2+'</td> \n'
            cadena+= '<td valign="center" align="right">'+font1+stock+font2+'</td> \n'
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")                
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        tama = '"1"'
            
        cadena = '</table>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\erpsussan.doc\\reporte-historicoProducto.html")

    def OnOmitirSucursales(self, event):
        aux = self.textCtrl2.GetLabel()
        self.OnLimpiar(None)
        self.textCtrl2.SetLabel(aux)
        self.OnBuscar(None)
